package com.example.mybatis_demo.mapper;

import com.example.mybatis_demo.dto.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <P> @Author: SongKeCheng
 * <P> Description:
 * <P> Type: Interface
 * <P> Date: 2024/6/18:15:24
 */

public interface GoodsMapper {

    public Goods findById(Integer id);

    /**
     * 多参数查询 根据 map
    */
    public List<Goods> findMutilParamByMap(Map<String,Object> map);


    /**
     * 方法传入多个参数
     * Inte arg0,String arg1
     * Inte param1,String param2
     * Inte id,String author
     *
    */
    public List<Goods> findMutilParamByMethod(@Param("id") Integer id,@Param("author") String author);

    /**
     * 多参数查询 根据 Goods 对象
     */
    public List<Goods> findMutilParamByObj(Goods goods);
    /**
     * 根据id 删除goods
    */
    public int deleteById(Integer id);

    /**
     * 根据id 更新名称
     */
    public int updateGoods(Goods goods);

    /**
     * 新增goods
    */
    public int insertGoods(Goods goods);

    /**
     * 动态sql if标签
    */
    public List<Goods> findDyByIf(Goods goods);

    /**
     * 动态sql where标签
     */
    public List<Goods> findDyByWhere(Goods goods);

    /**
     * 动态sql Choose 标签
     */
    public List<Goods> findDyByChoose(Goods goods);
    /**
     * 动态sql foreach 标签 使用in 查询
     */
    public List<Goods> findDyByForeachByIn(@Param("ids")List<Integer> ids);
    /**
     * 动态sql foreach 标签 使用or 查询
     */
    public List<Goods> findDyByForeachByOr(@Param("ids")List<Integer> ids);
    /**
     * 动态sql foreach  删除 标签 使用or 查询
     */
    public int  deleteDyByForeachByIn(@Param("ids")List<Integer> ids);
}
